Many computer applications may be made up of computer code that comes from different sources. Sometimes, a dynamic linked library (DLL) or other assembly may be provided by an operating system manufacturer, an application developer, or a third party. Further, various routines may be written by various teams or individuals within an application development team.
When a failure occurs during the execution of the application, determining the location of the failure within the application may be starting point for debugging.
Many applications may be designed to be extensible, where the main application may be extended with adapters that may add capabilities to the application. Some adapters may include additional user interfaces, additional communications services, or other additional capabilities. When a failure is encountered in such an application, a user may not be able to determine if the failure originated with the base application or one of several adapters that may be supplied by different manufacturers.